package com.dc.designPattern._11_proxy.extend.extend3;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

/**
 * Description: 自定义动态代理类
 * @author: gdc
 * @date: 2021/6/25
 * @version 1.0
 */
public class DynamicProxy<T> {

    public static <T> T newProxyInstance(ClassLoader loader,
                                         Class<?>[] interfaces,
                                         InvocationHandler h) {

        // 寻找JoinPoint切点，符合条件，执行前置通知
        if (true) {
            new BeforeAdvice().exec();
        }

        // 执行目标，并返回结果
        return (T) Proxy.newProxyInstance(loader, interfaces, h);
    }
}
